﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using VietKinsNutrition.Bussiness;
using VietKinsNutrition.Data;
using VietKinsNutrition.Common;
using VietKinsNutrition.ThucPham;
using System.Globalization;
using VietKinsNutrition.MoRong;

namespace VietKinsNutrition.UserControl
{
    public partial class UXuathucphamByToantruong : DevExpress.XtraEditors.XtraUserControl
    {
        ClsTblDm_NhapthucphamBLL ClsTblDm_Nhapthucpham_bll = new ClsTblDm_NhapthucphamBLL();
        ClsEventsInControlBLL ClsEventsInControl_bll = new ClsEventsInControlBLL();
        ClsExport2ExcelBLL ClsExport2Excel_bll = new ClsExport2ExcelBLL();
        ClsTblDm_XuatkhoBLL ClsTblDm_Xuatkho_bll = new ClsTblDm_XuatkhoBLL();
        Bussiness.ClsTblDm_NamhocBLL ClsTblDm_Namhocbll = new Bussiness.ClsTblDm_NamhocBLL();
        public bool AddThuphamMonan = false;
        public ThucphamtheobuaInfo info;
        public DataTable ReturnTbl;
        bool isThucphamKhoilop;
        static ClsThucdon_monanBLL ClsThucdon_monanbll;
        static int iValeTongsotre;
        static ClsTblGiaBLL ClsTblGiabll;
        ClsTblDm_SosanhnangluonBLL ClsTblDm_Sosanhnangluon_bll = new ClsTblDm_SosanhnangluonBLL();
        ClsTblBaoanBLL ClsTblBaoanbll = new ClsTblBaoanBLL();

        public UXuathucphamByToantruong()
        {
            ReturnTbl = null;
            InitializeComponent();
            chkTrongkho.Checked = false;
            ClsThucdon_monanbll = new ClsThucdon_monanBLL();
            ClsTblDm_Xuatkhobll = new ClsTblDm_XuatkhoBLL();
            isThucphamKhoilop = true;
            ClsTblGiabll = new ClsTblGiaBLL();
        }

        static ClsTblDm_XuatkhoBLL ClsTblDm_Xuatkhobll;
        static ClsTblMonan_ThucphamBLL ClsTblMonan_Thucphambll;
        int iBtn = 0;
        int iLoad = 0;
        private void UXuathucphamByToantruong_Load(object sender, EventArgs e)
        {
            ClsTblMonan_Thucphambll = new ClsTblMonan_ThucphamBLL(ReturnTbl);
            ClsTblMonan_Thucphambll.Bind_Nhomthucpham_ThucanCboAdALL(cboNhomTP);
            // bincombo khoi lop
            ClsThucdon_monanbll.Bind_Khoilop(cboKhoilop);
            UserComboBoxItem.SelectItem(cboKhoilop, "1");
            datNgay.EditValue = DateTime.Now;
            ClsTblDm_Nhapthucpham_bll.Bind_Grid_ListThucpham(0, grdCtrlThucpham);
            DataTable tblBaoan = ClsTblBaoanbll.BaoanbyNgay(datNgay.DateTime).Tables[0];//0, datNgay.DateTime, Convert.ToInt32(UserComboBoxItem.GetItemValue(cboKhoilop))).Tables[0];
            if (tblBaoan.Rows.Count > 0)
            {
                txtBaoan.EditValue = tblBaoan.Rows[0]["Tongsosuat"].ToString();
            }
            // bin bao ăn
            //ClsTblDm_Xuatkho_bll.Bind_GridDanhsachbaoan(this.GridDanhsachbaoan, datNgay.EditValue, ParamCls.NamhocId);
            // chưa có hóa đơn xuất thì hiện thị dữ liệu cần xuất
            ////
            // bind Hóa đơn xuất.
            iBtn = 0;
            // cảnh báo ở đây
        }
        private bool CheckSoluong(DataTable Tbl)
        {
            bool Value = false;
            if (Tbl.Rows.Count == 0)
                return false;
            foreach (DataRow Rw in Tbl.Rows)
            {
                if (Rw["SL"].ToString().Trim() == "" || Rw["SL"].ToString().Trim() == "0")
                {
                    Value = true;
                    break;
                }
            }
            return Value;
        }

        public void CheckDigit(KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar))
            {
                e.Handled = true;
            }
        }

        private bool CheckInsert(int i)
        {
            bool bReturn = true;
            foreach (DataRow Row in ((DataTable)grdToantruong.GridControl.DataSource).Rows)
            {
                try
                {

                    if (float.Parse(Row["Soluongxuat"].ToString().Trim()) > float.Parse(Row["Soluongton"].ToString().Trim()))
                    {
                        if (i == 0)
                        {
                            XtraMessageBox.Show("Thực phẩm trong kho không đủ để nấu, Hãy nhập thực phẩm vào kho trước", "Thông báo");
                            return false;
                        }
                        else
                        {
                            XtraMessageBox.Show("Hãy kích \"Tổng hợp dự kiến\" trước để tổng hợp dữ liệu vào khung xuất!", "Thông báo");
                            return false;
                        }
                    }
                }
                catch { return false; }
            }
            return bReturn;
        }

        private bool CheckInsert_NhapKho(DataTable TblCheck)
        {
            bool bReturn = false;
            foreach (DataRow Row in TblCheck.Rows)
            {
                try
                {
                    if (float.Parse(Row["Soluongxuat"].ToString().Trim()) > float.Parse(Row["Soluongton"].ToString().Trim()))
                    {
                        frmNhapkho frm = new frmNhapkho(datNgay.DateTime, TblCheck);
                        frm.ShowDialog();
                        return true;
                    }
                }
                catch { return false; }
            }
            return bReturn;
        }

        private void Tonghop()
        {
            DataTable TblFindHoadon = this.ClsTblDm_Xuatkho_bll.TblHoadonnhapxuat_GetId_ByNgay(datNgay.DateTime);
            if (TblFindHoadon.Rows.Count == 0)
            {
                try
                {
                    DataTable TblThucphamkhoi = this.ClsTblDm_Xuatkho_bll.NewTblHoadonnhapxuatReturnDSxuatthucpham_PLG_ByNgay(datNgay.DateTime, ClsThucdon_monanbll.Tbl_Khoilop());
                    if (CheckInsert_NhapKho(TblThucphamkhoi) == false)
                    {
                        frmNhapkho frm = new frmNhapkho(datNgay.DateTime);
                        frm.ShowDialog();
                    }
                }
                catch { }
            }
            else
            {
                frmNhapkho frm = new frmNhapkho(datNgay.DateTime);
                frm.ShowDialog();
            }
        }

        private void datNgay_EditValueChanged(object sender, EventArgs e)
        {
            try
            {
                cboKhoilop_EditValueChanged(sender, e);
                Tongsotrebaoan();
                //DataTable tblBaoan = ClsTblBaoanbll.BaoanbyNgay(datNgay.DateTime).Tables[0];//0, datNgay.DateTime, Convert.ToInt32(UserComboBoxItem.GetItemValue(cboKhoilop))).Tables[0];
                //foreach (DataRow Rw in tblBaoan.Rows)
                //{
                //    if (Rw["KhoilopId"].ToString() == UserComboBoxItem.GetItemValue(cboKhoilop))
                //    {
                //        txtBaoan.EditValue = Rw["tongsosuat"];
                //    }
                //    else
                //        txtBaoan.EditValue = "0";
                //}
            }
            catch { }
        }

        int iTongsotre = 0;
        private void Tongsotrebaoan()
        {
            DataTable TongsotreTbl = new DataTable();
            // trả về tổng sô trẻ.
            try
            {
                TongsotreTbl = ClsTblDm_Sosanhnangluon_bll.GetTongsotre(Convert.ToInt32(UserComboBoxItem.GetItemValue(cboKhoilop)), ParamCls.NamhocId, Convert.ToDateTime(datNgay.EditValue));
            }
            catch { return; }
            if (TongsotreTbl.Rows.Count > 0)
            {
                iTongsotre = int.Parse(TongsotreTbl.Rows[0]["Tongsosuat"].ToString());
            }
            iValeTongsotre = iTongsotre;
            //label5.Text = "Tổng trẻ ăn:" + " " + iTongsotre.ToString();
        }

        private void cboKhoilop_EditValueChanged(object sender, EventArgs e)
        {
            try
            {
                grdCtrlMonan.DataSource = ClsThucdon_monanbll.SelectByNgayanKhoilop(datNgay.DateTime, Convert.ToInt32(UserComboBoxItem.GetItemValue(cboKhoilop)));
                Tongsotrebaoan();
                grdCtrlDukien.DataSource = this.ClsTblDm_Xuatkho_bll.TblXuatchokhoilop_ByKhoilop_Ngay(datNgay.DateTime, Convert.ToInt32(UserComboBoxItem.GetItemValue(cboKhoilop)));
                grdCtrlToantruong.DataSource = this.ClsTblDm_Xuatkho_bll.TblHoadonnhapxuatReturnDSxuatthucpham_PLG_ByNgay(datNgay.DateTime);
                // tổng tiền;
                //TxtTongtienanchotre.Text = this.ReturnTongtienan(DGird_Danhsachthucphamcanxuat).ToString("#,##0");
                //nếu chưa xuất thì load dữ liệu từ form Kh
                DataTable tblBaoan = ClsTblBaoanbll.BaoanbyNgay(datNgay.DateTime).Tables[0];//0, datNgay.DateTime, Convert.ToInt32(UserComboBoxItem.GetItemValue(cboKhoilop))).Tables[0];
                foreach (DataRow Rw in tblBaoan.Rows)
                {
                    if (Rw["KhoilopId"].ToString() == UserComboBoxItem.GetItemValue(cboKhoilop))
                    {
                        txtBaoan.EditValue = Rw["tongsosuat"];
                    }
                }
                int tongso;
                if (txtBaoan.EditValue == null || txtBaoan.Text == "")
                    tongso = 0;
                else
                    tongso = Convert.ToInt32(txtBaoan.Text);
                ClsTblDm_Sosanhnangluon_bll.CalculatorTPDD(Convert.ToInt32(UserComboBoxItem.GetItemValue(cboKhoilop)), cboKhoilop.Text, tongso, grdDukien, grdTyle, "TẤT CẢ");
                if (chkTrongkho.Checked == false)
                {
                    //  TxtFind_TextChanged(sender, e);
                }
                else
                {
                    // bin lại thực phẩm trong kho
                    grdCtrlThucpham.DataSource = ClsTblDm_Nhapthucpham_bll.TblDanhsachhangtonByFindName(txtTimkiem.Text.Trim());
                }
            }
            catch { }
        }

        private void cboNhomTP_SelectedValueChanged(object sender, EventArgs e)
        {
            try
            {
                if (cboNhomTP.EditValue == null) return;
                if (cboNhomTP.EditValue != null)
                {
                    this.ClsTblDm_Nhapthucpham_bll.Bind_Grid_ListThucpham(int.Parse(UserComboBoxItem.GetItemValue(cboNhomTP)), grdCtrlThucpham);
                }
            }
            catch
            { }
        }

        private void chkTrongkho_CheckedChanged(object sender, EventArgs e)
        {
            if (chkTrongkho.Checked == false)
            {
                int a;
                if (cboNhomTP.EditValue == null)
                    a = 0;
                else
                    a = int.Parse(UserComboBoxItem.GetItemValue(cboNhomTP));
                this.ClsTblDm_Nhapthucpham_bll.Bind_Grid_ListThucpham(a, grdCtrlThucpham);
            }
            else
            {
                // bin lại thực phẩm trong kho
                grdCtrlThucpham.DataSource = ClsTblDm_Nhapthucpham_bll.TblDanhsachhangton();
            }
            //tblThucpham_thucanDataGridView.Visible = tblThucphamtonDataGridView.Visible;
            //tblThucphamtonDataGridView.Visible = !tblThucphamtonDataGridView.Visible; 
        }

        private void txtTimkiem_TextChanged(object sender, EventArgs e)
        {
            if (chkTrongkho.Checked == false)
            {
                int a;
                if (cboNhomTP.EditValue == null)
                    a = 0;
                else
                    a = int.Parse(UserComboBoxItem.GetItemValue(cboNhomTP));
                ClsTblDm_Nhapthucpham_bll.Bind_GridThucphambyNhomandTenDukien(a, txtTimkiem.Text.Trim(), grdCtrlThucpham);
            }
            else
            {
                // bin lại thực phẩm trong kho
                grdCtrlThucpham.DataSource = ClsTblDm_Nhapthucpham_bll.TblDanhsachhangtonByFindName(txtTimkiem.Text.Trim());
            }
        }

        private void grdThucpham_DoubleClick(object sender, EventArgs e)
        {
            DataTable TblFindHoadon = this.ClsTblDm_Xuatkho_bll.TblHoadonnhapxuat_GetId_ByNgay(datNgay.DateTime);
            // kiểm tra thêm cho khối và kho là như nhau
            if (txtBaoan.EditValue == null || txtBaoan.Text.Trim() == "0" || txtBaoan.Text.Trim() == "")
            {
                XtraMessageBox.Show("Khối " + cboKhoilop.Text.Trim() + " có tổng xuất báo ăn bằng 0. Hệ thống không cho phép thêm.\nHãy nhập số báo ăn trước hoặc chọn khối khác để thêm", "Thông báo");
                txtBaoan.Focus();
                return;
            } 
            if (TblFindHoadon.Rows.Count == 0)
            {
                // không thông báo gì nếu chưa có hóa đơn và cho phép thêm mới
                // cảnh báo nếu chưa báo ăn
            }
            else
            {
                XtraMessageBox.Show("Trước đó đã có hóa đơn xuất thực phẩm cho toàn trường, hệ thống không cho phép sửa.", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
            Bind_DGXuat_Add(chkTrongkho.Checked, "Add");
            ClsTblDm_Sosanhnangluon_bll.CalculatorTPDD(Convert.ToInt32(UserComboBoxItem.GetItemValue(cboKhoilop)), cboKhoilop.Text, Convert.ToInt32(txtBaoan.Text), grdDukien, grdTyle, "TẤT CẢ");
            grdCtrlToantruong.DataSource = this.ClsTblDm_Xuatkho_bll.TblHoadonnhapxuatReturnDSxuatthucpham_PLG_ByNgay(datNgay.DateTime);
        }

        private void Bind_DGXuat_Add(bool isKho, string Value)
        {
            DataTable TblNew = new DataTable();
            int iNew = -1;
            try
            {
                if (this.chkTrongkho.Checked == false)
                {
                    #region khong la kho
                    try
                    {
                        iNew = int.Parse(grdThucpham.GetFocusedRowCellValue("IdThucpham_thucan").ToString());
                    }
                    catch { }
                    TblNew = ClsTblDm_Nhapthucpham_bll.TblFindThucphanxuatByThucpham_thucanIdAndDtime(iNew, datNgay.DateTime);
                    if (Value == "Add")
                    {
                        TblNew.Columns.Remove("Kcalo");
                        TblNew.Columns.Remove("Protid_DV");
                        TblNew.Columns.Remove("Protid_TV");
                        TblNew.Columns.Remove("Lipid_TV");
                        TblNew.Columns.Remove("Lipid_DV");
                        TblNew.Columns.Remove("Glucid");
                        TblNew.Columns.Remove("Tylequydoi");
                        TblNew.Columns.Remove("Tylethai");
                        TblNew.Columns.Remove("Soluongton");
                        // TblNew.Columns.Remove("Dongia");
                        //TblNew.Columns.Remove("Thanhtien");
                        if (grdDukien.RowCount <= 0)
                        {
                            grdCtrlDukien.DataSource = TblNew;
                        }
                        else
                        {
                            // kiểm tra xem có tồn tại Id ko, có thì loại, ko thêm tiếp
                            try
                            {
                                iNew = int.Parse(grdThucpham.GetFocusedRowCellValue("IdThucpham_thucan").ToString());
                            }
                            catch { }
                            int iOld;
                            foreach (DataRow Rw in ((DataTable)grdCtrlDukien.DataSource).Rows)
                            {
                                iOld = Convert.ToInt32(Rw[0].ToString());
                                if (iNew == iOld)
                                {
                                    XtraMessageBox.Show("Thực phẩm vừa chọn đã tồn tại, bạn cần thao tác lại");
                                    return;
                                }
                            }
                            DataRow NewRw = ((DataTable)grdCtrlDukien.DataSource).NewRow();
                            if (TblNew.Rows.Count > 0)
                            {
                                // gán giá trị
                                {
                                    NewRw["Thucpham_ThucanId"] = TblNew.Rows[0]["Thucpham_ThucanId"];
                                    NewRw["DonvitinhId"] = TblNew.Rows[0]["DonvitinhId"];
                                    NewRw["Tenthucan"] = TblNew.Rows[0]["Tenthucan"];
                                    NewRw["Tendonvitinh"] = TblNew.Rows[0]["Tendonvitinh"];
                                    NewRw["Soluongxuat"] = TblNew.Rows[0]["Soluongxuat"];
                                    NewRw["dongia"] = TblNew.Rows[0]["dongia"];
                                    NewRw["thanhtien"] = 0;
                                    NewRw["NgayNX"] = TblNew.Rows[0]["NgayNX"];
                                }
                                ((DataTable)grdCtrlDukien.DataSource).Rows.Add(NewRw);
                            }
                        }
                    }
                    else
                    {
                        if (grdThucpham.RowCount > 0)
                        {
                            if (grdThucpham.FocusedColumn.FieldName == "Soluongxuat" || grdThucpham.FocusedColumn.FieldName == "Dongia")
                                return;
                            ((DataTable)grdCtrlDukien.DataSource).Rows.Remove(grdDukien.GetFocusedDataRow());
                        }
                    }
                    #endregion
                }
                else
                {

                    try
                    {
                        iNew = int.Parse(grdThucpham.GetFocusedRowCellValue("IdThucpham_Thucan").ToString());
                    }
                    catch { }
                    TblNew = ClsTblDm_Nhapthucpham_bll.TblFindThucphanxuatByThucpham_thucanIdAndDtime(iNew, datNgay.DateTime);
                    if (Value == "Add")
                    {
                        TblNew.Columns.Remove("Kcalo");
                        TblNew.Columns.Remove("Protid_DV");
                        TblNew.Columns.Remove("Protid_TV");
                        TblNew.Columns.Remove("Lipid_TV");
                        TblNew.Columns.Remove("Lipid_DV");
                        TblNew.Columns.Remove("Glucid");
                        TblNew.Columns.Remove("Tylequydoi");
                        TblNew.Columns.Remove("Tylethai");
                        TblNew.Columns.Remove("Soluongton");
                        // TblNew.Columns.Remove("Dongia");
                        // TblNew.Columns.Remove("Thanhtien");
                        if (grdDukien.RowCount <= 0)
                        {
                            grdCtrlDukien.DataSource = TblNew;
                        }
                        else
                        {
                            // kiểm tra xem có tồn tại Id ko, có thì loại, ko thêm tiếp
                            try
                            {
                                iNew = int.Parse(grdThucpham.GetFocusedRowCellValue("IdThucpham_thucan").ToString());
                            }
                            catch { }
                            int iOld;
                            foreach (DataRow Rw in ((DataTable)grdCtrlDukien.DataSource).Rows)
                            {
                                iOld = Convert.ToInt32(Rw[0].ToString());
                                if (iNew == iOld)
                                {
                                    XtraMessageBox.Show("Thực phẩm vừa chọn đã tồn tại, bạn cần thao tác lại");
                                    return;
                                }
                            }
                            DataRow NewRw = ((DataTable)grdCtrlDukien.DataSource).NewRow();
                            if (TblNew.Rows.Count > 0)
                            {
                                // gán giá trị
                                {
                                    NewRw["Thucpham_ThucanId"] = TblNew.Rows[0]["Thucpham_ThucanId"];
                                    NewRw["DonvitinhId"] = TblNew.Rows[0]["DonvitinhId"];
                                    NewRw["Tenthucan"] = TblNew.Rows[0]["Tenthucan"];
                                    NewRw["Tendonvitinh"] = TblNew.Rows[0]["Tendonvitinh"];
                                    NewRw["Soluongxuat"] = TblNew.Rows[0]["Soluongxuat"];
                                    NewRw["Dongia"] = TblNew.Rows[0]["Dongia"];
                                    NewRw["thanhtien"] = 0;
                                    NewRw["NgayNX"] = TblNew.Rows[0]["NgayNX"];
                                }
                                ((DataTable)grdCtrlDukien.DataSource).Rows.Add(NewRw);
                            }
                        }
                    }
                    else
                    {
                        if (grdThucpham.RowCount > 0)
                        {
                            if (grdThucpham.FocusedColumn.FieldName == "Soluongxuat")
                                return;
                            ((DataTable)grdCtrlDukien.DataSource).Rows.Remove(grdDukien.GetFocusedDataRow());
                        }
                    }
                }
            }
            catch { }
        }

        //ClsTblDm_SosanhnangluonBLL ClsTblDm_Sosanhnangluon_bll = new ClsTblDm_SosanhnangluonBLL();
        private void grdDukien_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e)
        {
            try
            {
                object objSL = grdDukien.GetFocusedRowCellValue("Soluongxuat");
                object objDG = grdDukien.GetFocusedRowCellValue("Dongia");
                object objId = grdDukien.GetFocusedRowCellValue("Thucpham_ThucanId");
                if (objSL == null || objSL.ToString() == "")
                {
                    return;
                }
                else if (objDG == null || objDG.ToString() == "")
                {
                    return;
                }
                else
                {
                    double sl = Convert.ToDouble(objSL);
                    double dg = Convert.ToDouble(objDG);
                    foreach (DataRow row in ((DataTable)grdDukien.GridControl.DataSource).Rows)
                    {
                        if (objId == null)
                        {
                            return;
                        }
                        else if (row["Thucpham_thucanId"].ToString() == objId.ToString())
                        {
                            row["Thanhtien"] = (sl * dg);
                        }
                    }
                    //grvNhapthucpham.SetRowCellValue(grvNhapthucpham.GetRowHandle(0), grvNhapthucpham.Columns["Thanhtien"], (sl * dg));
                }
            }
            catch { }
            Bussiness.ClsTblDm_NamhocBLL ClsTblDm_Namhocbll = new Bussiness.ClsTblDm_NamhocBLL();
            try
            {
                ClsTblDm_Sosanhnangluon_bll.CalculatorTPDD(Convert.ToInt32(UserComboBoxItem.GetItemValue(cboKhoilop)), cboKhoilop.Text, Convert.ToInt32(txtBaoan.Text), grdDukien, grdTyle, "TẤT CẢ");
            }
            catch { }
        }

        private void grdDukien_DoubleClick(object sender, EventArgs e)
        {
            if (grdDukien.RowCount > 0)
            {
                if (grdDukien.FocusedColumn.FieldName != "Soluongxuat" && grdDukien.FocusedColumn.FieldName != "Dongia")
                {
                    ((DataTable)grdDukien.GridControl.DataSource).Rows.Remove(grdDukien.GetFocusedDataRow());
                }
            }
            else return;
        }

        private bool CheckValueKhoilop()
        {
            try
            {
                bool Value = true;
                foreach (DataRow Rw in ((DataTable)grdDukien.GridControl.DataSource).Rows)
                {
                    try
                    {
                        if (float.Parse(Rw["Soluongxuat"].ToString()) <= 0 || float.Parse(Rw["Dongia"].ToString()) <= 0)
                        {
                            Value = false;
                            return false;
                        }
                    }
                    catch
                    {
                        return false;
                    }
                }
                return Value;
            }
            catch
            {
                return false;
            }
        }

        private void btnCapnhat_Click(object sender, EventArgs e)
        {
            try
            {
                DataTable TblFindHoadon = this.ClsTblDm_Xuatkho_bll.TblHoadonnhapxuat_GetId_ByNgay(datNgay.DateTime);
                DataTable baoan = ClsTblBaoanbll.BaoanbyNgay(datNgay.DateTime).Tables[0];//0, datNgay.DateTime, Convert.ToInt32(UserComboBoxItem.GetItemValue(cboKhoilop))).Tables[0];

                if (TblFindHoadon.Rows.Count == 0)
                {
                    if (txtBaoan.EditValue == null || txtBaoan.Text.Trim() == "0" || txtBaoan.Text.Trim() == "")
                    {
                        XtraMessageBox.Show("Khối " + cboKhoilop.Text.Trim() + " có tổng xuất báo ăn bằng 0. Hệ thống không cho phép thêm.\nHãy nhập báo ăn trước hoặc chọn khối khác để thêm", "Thông báo");
                        txtBaoan.Focus();
                        return;
                    }
                }
                else
                {
                    XtraMessageBox.Show("Trước đó đã có hóa đơn xuất thực phẩm cho toàn trường, hệ thống không cho phép sửa.", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return;
                }
                if (grdDukien.RowCount == 0)
                {
                    //XtraMessageBox.Show("Chưa có dữ liệu để cập nhật cho khối");
                    //return;
                }
                if (CheckValueKhoilop() == false)
                {
                    XtraMessageBox.Show("Vẫn tồn tại số lượng xuất cho khối lớp bằng 0, hoặc đơn giá bằng 0");
                    return;
                }
                if (XtraMessageBox.Show("Bạn muốn cập nhật lại dữ liệu dự kiến cho khối ?", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    ClsTblDm_Xuatkho_bll.Delete_ALL_XuathangchokhoiBy(datNgay.DateTime, Convert.ToInt32(UserComboBoxItem.GetItemValue(cboKhoilop)));
                    // cập nhật lại toàn bộ ở đây.
                    //if (baoan.Rows.Count <= 0)
                    //{
                    //    ClsTblBaoanbll.Insert(Convert.ToInt32(UserComboBoxItem.GetItemValue(cboKhoilop)), datNgay.DateTime, int.Parse(txtBaoan.Text), int.Parse(txtBaoan.Text), 0);
                    //}
                    //else
                    //{
                    //    ClsTblBaoanbll.Edit(int.Parse(baoan.Rows[0]["Id"].ToString()), int.Parse(baoan.Rows[0]["LophocId"].ToString()), datNgay.DateTime, int.Parse(txtBaoan.Text), int.Parse(txtBaoan.Text), 0);
                    //}
                    foreach (DataRow Rw in ((DataTable)grdDukien.GridControl.DataSource).Rows)
                    {
                        ClsTblDm_Xuatkho_bll.Insert_XuathangchokhoiBy(datNgay.DateTime, Convert.ToInt32(UserComboBoxItem.GetItemValue(cboKhoilop)), Convert.ToInt32(Rw["Thucpham_ThucanId"]), Rw["Soluongxuat"].ToString().Trim(), Rw["Dongia"].ToString().Trim());
                    }
                    XtraMessageBox.Show("Cập nhật thành công");
                }
                else
                {
                    // load lại PLG, DS thực phẩm khối
                    cboKhoilop_EditValueChanged(sender, e);
                }
            }
            catch { }
        }

        private void btnDukien_Click(object sender, EventArgs e)
        {
            //cboKhoilop_EditValueChanged(sender, e);
            DataTable TblFindHoadon = this.ClsTblDm_Xuatkho_bll.TblHoadonnhapxuat_GetId_ByNgay(datNgay.DateTime);
            // kiểm tra thêm cho khối và kho là như nhau
            if (TblFindHoadon.Rows.Count == 0)
            {
                // đổ toàn bộ thực phẩm của các khối lên
                try
                {
                    DataTable TblThucphamkhoi = this.ClsTblDm_Xuatkho_bll.NewTblHoadonnhapxuatReturnDSxuatthucpham_PLG_ByNgay(datNgay.DateTime, ClsThucdon_monanbll.Tbl_Khoilop());
                    if (TblThucphamkhoi.Rows.Count == 0)
                    {
                        XtraMessageBox.Show("Chưa lên thực phẩm dự kiến cho khối", "Thông báo");
                        return;
                    }
                    else
                    {
                        grdToantruong.GridControl.DataSource = TblThucphamkhoi;
                        // nhập thực phẩm thiếu ở đây
                        CheckInsert(0);
                    }
                }
                catch { }

            }
            else
            {

            }
        }

        private void btnNhapTP_Click(object sender, EventArgs e)
        {
            Tonghop();
        }

        DataRow dr; string sTieude, sTenso, sTentruong, sTenphong;
        private void btnIn_Click(object sender, EventArgs e)
        {
            NumberFormatInfo nfi = new CultureInfo("en-US", false).NumberFormat;
            nfi.NumberGroupSeparator = ".";
            nfi.NumberDecimalSeparator = ",";
            string tt = grdDukien.Columns["Thanhtien"].SummaryItem.SummaryValue.ToString();
            if (grdDukien.RowCount <= 0)
                return;
            ClsTblTruonghocBLL ClsTblTruonghocbll = new ClsTblTruonghocBLL();
            ClsExport2ExcelBLL ClsExport2Excelbll = new ClsExport2ExcelBLL();
            DataTable Tbl = ClsTblTruonghocbll.ReturnTblTRuong();
            if (Tbl.Rows.Count > 0)
            {
                dr = Tbl.Rows[0];
                sTenso = dr["TensoGD"].ToString();
                sTentruong = dr["Tentruong"].ToString();
                sTenphong = dr["TenphongGD"].ToString();
                sTieude = "THỰC PHẨM DỰ KIẾN CHO KHỐI: " + cboKhoilop.Text.ToUpper() + " (" + datNgay.DateTime.ToString("dd - MM - yyyy") + ")";
                saveFileDialog1.FileName = sTieude;
            }
            //  ClsExport2Excelbll.ExportFileExel(sTieude, sTenso, sTenphong, sTentruong, ".xls", this.DGird_DanhsachthucphamcanxuatKHOILOP);


            DataTable tg = (DataTable)(grdDukien.GridControl.DataSource);
            DataTable tblhoadon = tg.Copy();
            try
            {
                tblhoadon.Columns.Remove("Thucpham_ThucanId");
                tblhoadon.Columns.Remove("DonvitinhId");
                tblhoadon.Columns.Remove("NgayNX");
            }
            catch { }
            System.IO.Stream stream = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("VietKinsNutrition.Resources." + "Xuat thuc pham.xls");
            ClsDanhsachNV.Hoadon_xuat(stream, "Xuat thuc pham.xls", sTenso, sTenphong, sTentruong, sTieude, tblhoadon, tt);
        
        }

        private void btnIntoantruong_Click(object sender, EventArgs e)
        {
            DataTable TblFindHoadon = this.ClsTblDm_Xuatkho_bll.TblHoadonnhapxuat_GetId_ByNgay(datNgay.DateTime);
            NumberFormatInfo nfi = new CultureInfo("en-US", false).NumberFormat;
            nfi.NumberGroupSeparator = ".";
            nfi.NumberDecimalSeparator = ",";
            string tt = grdToantruong.Columns["Thanhtien"].SummaryItem.SummaryValue.ToString();
            if (TblFindHoadon.Rows.Count == 0)
            {
                XtraMessageBox.Show("Chưa có hóa đơn xuất");
                return;
            }
            if (this.grdToantruong.RowCount > 0)
            {
                ClsTblDmTruonghocDAL ClsTblDmTruonghocdal = new ClsTblDmTruonghocDAL();
                DataTable dt = ClsTblDmTruonghocdal.TblTruong();
                DataRow dr = dt.Rows[0];
                sTenso = dr["TensoGD"].ToString();
                sTentruong = dr["Tentruong"].ToString();
                sTenphong = dr["TenphongGD"].ToString();
                sTieude = "Hóa đơn xuất hàng trong ngày ".ToUpper();
                if (grdToantruong.RowCount > 0)
                {
                    int SHD;
                    SHD = int.Parse(TblFindHoadon.Rows[0]["Id"].ToString());
                    //   ClsTblDm_Nhapthucpham_bll.ExportFileExel(this.Dgrid_Chitietnhapthucpham, this.saveFileDialog1, textTongtien, SHD);
                    DataTable tg = (DataTable)grdToantruong.GridControl.DataSource;
                    DataTable tblhoadon = tg.Copy();
                    try
                    {
                        tblhoadon.Columns.Remove("Thucpham_ThucanId");
                        tblhoadon.Columns.Remove("DonvitinhId");
                        tblhoadon.Columns.Remove("Kcalo");
                        tblhoadon.Columns.Remove("Protid_DV");
                        tblhoadon.Columns.Remove("Lipid_DV");
                        tblhoadon.Columns.Remove("Protid_TV");
                        tblhoadon.Columns.Remove("Lipid_TV");
                        tblhoadon.Columns.Remove("GlucId");
                        tblhoadon.Columns.Remove("Tylequydoi");
                        tblhoadon.Columns.Remove("Tylethai");
                        tblhoadon.Columns.Remove("NgayNX");

                    }
                    catch { }
                    System.IO.Stream stream = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("VietKinsNutrition.Resources." + "Hoa don nhap hang.xls");
                    ClsDanhsachNV.Hoadon_nhap(stream, "Hoa don nhap hang.xls", sTenso, sTenphong, sTentruong, sTieude, tt, SHD, tblhoadon, datNgay.DateTime.ToString("dd-MM-yyyy"));
                }
            }
        }

        private void btnXoa_Click(object sender, EventArgs e)
        {
            DataTable TblXuatkho;
            try
            {
                DataTable TblFindHoadon = this.ClsTblDm_Xuatkho_bll.TblHoadonnhapxuat_GetId_ByNgay(datNgay.DateTime);
                TblXuatkho = this.ClsTblDm_Xuatkho_bll.TblHoadonnhapxuat_GetId_ByLonhonNgay(datNgay.DateTime);
                if (TblFindHoadon.Rows.Count == 0)
                {
                    XtraMessageBox.Show("Hóa đơn xuất cho toàn trường chưa có");
                    return; // không thông báo gì nếu chưa có hóa đơn
                }
                else
                {
                    if (TblXuatkho.Rows.Count > 1)
                    {
                        if (XtraMessageBox.Show("Trước đó đã có " + (TblXuatkho.Rows.Count - 1).ToString() + " hóa đơn xuất được nhập.\nToàn bộ dữ liệu trong hóa đơn xuất và nhập sau ngày " + datNgay.DateTime.ToString("dd/MM/yyyy") + " sẽ bị sai lệch hoàn toàn.\nBạn chắc chắn xóa?", "Cảnh báo", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
                        {
                            // bao gồm xóa thực phẩm xuất + hóa đơn
                            ClsTblDm_Xuatkho_bll.Delete_All_Hoadon_XuathangAndThucphamxuatbyHoadonId(int.Parse(TblFindHoadon.Rows[0]["Id"].ToString()));
                        }
                        else
                        { return; }
                    }
                    else
                    {
                        // tồn tại 1 hóa đơn và là sau cùng
                        if (XtraMessageBox.Show("Bạn có muốn xóa hóa đơn xuất ?", "Cảnh báo", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
                        {
                            // bao gồm xóa thực phẩm xuất + hóa đơn
                            ClsTblDm_Xuatkho_bll.Delete_All_Hoadon_XuathangAndThucphamxuatbyHoadonId(int.Parse(TblFindHoadon.Rows[0]["Id"].ToString()));
                            XtraMessageBox.Show("Xóa dữ liệu thành công");
                        }
                        cboKhoilop_EditValueChanged(sender, e);
                    }
                    // load lại khi đã xóa hóa đơn xuất
                }
            }
            catch { }
        }

        private void btnTrogiup_Click(object sender, EventArgs e)
        {

        }

        int iMaHoadon = -1;
        private void btnCapnhattoantruong_Click(object sender, EventArgs e)
        {
            ClsThucdon_monanBLL monan = new ClsThucdon_monanBLL();

            bool Check = monan.SelectByNgayNX(datNgay.DateTime);
            if (Check)
            {
                XtraMessageBox.Show("Đã có hóa đơn nhập - xuất thực phẩm sau thời gian này\n " +
                    "Bạn không được phép thao tác dữ liệu.", "Không Hợp Lệ", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            #region sửa với hóa đơn cho toàn trường
            try
            {
                if (grdToantruong.RowCount == 0)
                {
                    XtraMessageBox.Show("Hãy kích \"Tổng hợp dự kiến\" trước để tổng hợp dữ liệu vào khung xuất!", "Thông báo");
                    return;
                }
                else
                    if (CheckInsert(1) == false)
                    {
                        //  MessageBox.Show("Vẫn tồn tại giá xuất hoặc số lượng xuất bằng 0, hoặc số lượng xuất lớn hơn số lượng còn", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                        return;
                    }
                if (XtraMessageBox.Show("Bạn chắc chắn cập nhập phiếu xuất thực phẩm cho trường?", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    iMaHoadon = -1;
                    DataTable TblFindHoadon = this.ClsTblDm_Xuatkho_bll.TblHoadonnhapxuat_GetId_ByNgay(datNgay.DateTime);
                    if (TblFindHoadon.Rows.Count > 0)
                    {
                        iMaHoadon = int.Parse(TblFindHoadon.Rows[0]["Id"].ToString());
                    }
                    if (iMaHoadon == -1)
                    {
                        // insert tong hoa đơn
                        this.ClsTblDm_Xuatkho_bll.TblHoadonnhapxuat_Add(datNgay.DateTime, float.Parse(grdToantruong.Columns["Thanhtien"].SummaryItem.SummaryValue.ToString()));
                    }
                    else
                    {
                        ClsTblDm_Xuatkho_bll.Delete_XuathangbyNgay(iMaHoadon);
                        // sửa lại hóa đơn
                        ClsTblDm_Xuatkho_bll.Edit_Hoadondonxuat(iMaHoadon, float.Parse(grdToantruong.Columns["Thanhtien"].SummaryItem.SummaryValue.ToString()));
                    }
                    // sửa lại ở đây
                    TblFindHoadon = this.ClsTblDm_Xuatkho_bll.TblHoadonnhapxuat_GetId_ByNgay(datNgay.DateTime);
                    if (TblFindHoadon.Rows.Count > 0)
                    {
                        iMaHoadon = int.Parse(TblFindHoadon.Rows[0]["Id"].ToString());
                    }
                    else
                    {
                        XtraMessageBox.Show("Sửa dữ liệu hóa đơn thất bại");
                        return;
                    }
                    for (int i = 0; i < grdToantruong.RowCount; i++ )
                    {
                        DataRow GrdRow = grdToantruong.GetDataRow(i);
                        this.ClsTblDm_Xuatkho_bll.TblNhapxuathanghoa_Add(iMaHoadon, int.Parse(GrdRow[1].ToString()),
                                         int.Parse(GrdRow[0].ToString()),
                                         (GrdRow[13].ToString()),
                                         GrdRow[14].ToString(),
                                         GrdRow[12].ToString());
                    }
                    XtraMessageBox.Show("Cập nhật hóa đơn thành công");
                }
                cboKhoilop_EditValueChanged(sender, e);
            }
            catch
            {
            }
            #endregion
        }

        //private void txtBaoan_KeyPress(object sender, KeyPressEventArgs e)
        //{
        //    CheckDigit(e);
        //}

        private void grdDukien_KeyPress(object sender, KeyPressEventArgs e)
        {
            CheckDigit(e);
        }

        private void btnLayngaytruoc_Click(object sender, EventArgs e)
        {
            FrmChonxuatthucpham frmChonxuatthucpham = new FrmChonxuatthucpham();
            frmChonxuatthucpham.ShowDialog();
            cboKhoilop_EditValueChanged(sender, e);
        }

        private void txtBaoan_DoubleClick(object sender, EventArgs e)
        {
            FrmBaoan frmBaoan = new FrmBaoan();
            frmBaoan.ShowDialog();
            cboKhoilop_EditValueChanged(sender, e);
        }
    }
}
